主题
变量
定义变量
基本变量
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,否则它将是非零值。
另外,$$ 可以用于创建临时文件名或其他需要唯一标识符的任务,以避免命名冲突。
