主题
变量
定义变量
基本变量
bash
PRICE_PER_APPLE=5
MyFirstLetters=ABC
当变量之间包含空格时,可以使用引号封装:
注意
在编写 Shell 脚本时,通常推荐使用单引号 ''
来定义字符串常量,以防止不必要的变量扩展。
只有在字符串中需要使用变量或命令时,才使用双引号 ""
。
bash
greeting='Hello world!'
将命令作为一个变量,可以通过用反引号 `` 或 $()
封装命令来完成替换:
bash
FILELIST=`ls`
FileWithTimeStamp=/tmp/my-dir/file_$(/bin/date +%Y-%m-%d).txt
数组可以在一个名称下保存多个值。
数组的值通过括号 ()
括起来,各个值通过空格来分隔:
bash
my_array=(apple banana "Fruit Basket" orange)
读取变量
反斜杠 \
用于转义特殊字符的含义:
bash
PRICE_PER_APPLE=5
echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE"
使用 ${}
封装变量名称以避免歧义:
bash
MyFirstLetters=ABC
echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ"
使用引号 ""
封装变量名称将保留任何空格值:
bash
greeting='Hello world!'
echo $greeting" now with spaces: $greeting"
# => Hello world! now with spaces: Hello world!
- 使用
${array[index]}
读取数组元素,例如:${my_array[0]}
。 - 使用
${#array[index]}
读取数组元素的字符串长度,例如:${#my_array[0]}
。 - 使用
${#array[@]}
获取数组的长度。
bash
my_array=(apple banana "Fruit Basket" orange)
echo ${my_array[0]} # apple
echo ${#my_array[0]} # 5
echo ${my_array[@]} # 4
用户输入
读取用户输入:使用 read
命令从用户输入中读取值,例如:read USERNAME
。
特殊变量
在脚本内部,您可以使用 $0
获取脚本名称,使用 $1
、$2
、$3
获取相应的参数值。
$?
:表示上一个命令的退出状态。通常,如果命令成功执行,$?
的值将为 0,否则它将为非零。$$
:表示当前进程的PID(进程标识符)。
示例:您可以使用 $?
来检查上一个命令是否成功执行,例如:
bash
ls non_existent_directory
if [ $? -eq 0 ]; then
echo "Command succeeded"
else
echo "Command failed"
fi
在这个示例中,如果 ls
命令成功执行(即目录存在),则 $?
的值为 0,否则它将是非零值。
另外,$$
可以用于创建临时文件名或其他需要唯一标识符的任务,以避免命名冲突。