例如
还可以指定php
常见的shell解释器有
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
也在运行时指定: /bin/sh test.sh
#!/bin/bash
#定义变量
name="cat"
age=10;
#通过美元符号使用变量
echo "hello ${name},age:${age}"
#readonly 定义只读变量
readonly readonly_var="dog"
#这时再赋值是错误的
readonly_var="cat"
#unset 删除变量,但是不能删除只读变量,unset 后再使用为空
unset name
echo "name:${name}"
#!/bin/bash
#定义字符串
str1="str1"
str2='str2'
str3="${str1},${str2}"
echo str3
#输出字符串长度
echo "${#str3}"
#截取字符串
num="0123456789"
echo ${num:1:7}
#!/bin/bash
#定义数组
arr=("0" "1" "2" "3" "4")
#还可以指定索引赋值
arr[5]="5"
#读取数组
echo ${arr[5]}
#获取所有元素
echo ${arr[@]}
echo ${arr[*]}
#获取数组长度
echo ${#arr[*]}
#!/bin/bash
#传递参数
echo "第一个参数为${0},第二个参数为${1}"
#此时执行 ./t.sh lala 输入 第一个参数为./t.sh,第二个参数为lala
echo "当前有${#}个参数${*},当前的pid ${$}"
参数 |
说明 |
$# |
传递到脚本的参数个数 |
$* |
以一个单字符串显示所有向脚本传递的参数。如"∗"用「"」括起来的情况、以"1 2…n"的形式输出所有参数。 |
$$ |
脚本运行的当前进程ID号 |
$! |
后台运行的最后一个进程的ID号 |
$@ |
与∗相同,但是使用时加引号,并在引号中返回每个参数。如"@"用「"」括起来的情况、以"1""2" … "$n" 的形式输出所有参数。 |
$- |
显示Shell使用的当前选项,与set命令功能相同。 |
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
#!/bin/bash
#输入输入
echo "标准输入"
#输入
read name
#开启转义
echo -e "\a\abbbbb\r"
#输出到文件
echo `ls` >> myfile
#!/bin/bash
#输入输入
printf "%-20s\t%-10s\t%-10s\n" 姓名 性别 体重
printf "%-20s\t%-10s\t%-10.2f\n" cat 男 50.555
printf "12345\r000"
test
参数 说明 |
|
-eq |
等于则为真 |
-ne |
不等于则为真 |
-gt |
大于则为真 |
-ge |
大于等于则为真 |
-lt |
小于则为真 |
-le |
小于等于则为真 |
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
字符串测试 |
|
参数 |
说明 |
= |
等于则为真 |
!= |
不相等则为真 |
-z |
字符串 字符串的长度为零则为真 |
-n |
字符串 字符串的长度不为零则为真 |
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi
文件测试参数 |
说明 |
-e |
文件名 如果文件存在则为真 |
-r |
文件名 如果文件存在且可读则为真 |
-w |
文件名 如果文件存在且可写则为真 |
-x |
文件名 如果文件存在且可执行则为真 |
-s |
文件名 如果文件存在且至少有一个字符则为真 |
-d |
文件名 如果文件存在且为目录则为真 |
-f |
文件名 如果文件存在且为普通文件则为真 |
-c |
文件名 如果文件存在且为字符型特殊文件则为真 |
-b |
文件名 如果文件存在且为块特殊文件则为真 |
实例演示:
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
输出结果:
文件已存在!
#!/bin/bash
if [[ condition ]]; then
#statements
elif [[ condition ]]; then
#statements
fi
例如
#!/bin/bash
name1="cat"
name2="cat"
if [[ name1 -eq name2 ]]; then
echo "eq"
fi
#!/bin/bash
for (( i = 0; i < 10; i++ )); do
echo $i
done
for lsstr in `ls`; do
echo "======${lsstr}"
done
while [[ j -lt 10 ]]; do
let "j++"
echo $j
done
word="cat"
case $word in
"cat" )
echo "cat"
;;
"dog" )
echo "dog"
;;
esac
#!/bin/bash
fun1()
{
echo "fun1..."
}
fun1
fun2()
{
echo "fun2..."
#return 值为0-255
return 10
}
fun2
echo $?
#!/bin/bash
#输出从定向
ls>outfile.txt
#输出从定向追加
ls>>outfile.txt
#输出重定向
$cmd<infile.txt
echo $cmd
#从文件输入
#错误重定向
las 2>errfile.txt
las 2>>errfile.txt
#将标准输入和标准输入全部重定向
ls>errfile.txt 2>&1
ls>>errfile.txt 2>&1
#Here Document
cat<<delimiter
lalala
delimiter
#输出到/dev/null
ls>/dev/null
#!/bin/bash
. t.sh
#或
source t.sh
发表回复