Linux的Shell种类很多。本篇文章关注的是Bash,其全称是Bourne Again Shell。
以下是一些非常基础的用法。
echo
命令,用于向窗口输出文本
echo Hello World!
- 命名一个变量。
$
: 这个符号是用来引用变量的。
引用变量时,加大括号与不加大括号效果是一样的。
DIY_NAME="撇目双人聿"
# echo "My name is $DIY_NAME"
echo "My name is ${DIY_NAME}"
- 处理控制台输入
echo "Enter your name: "
read NAME
echo "Hello $NAME, nice to meet you!"
- 简单的
if
语句
这里要注意的是左中括号后面以及右中括号前面一定要有一个空格。
NAME="撇目双人聿"
if [ "$NAME" == "撇目双人聿" ]
then
echo "Your name is 撇目双人聿"
fi
if-else
语句
NAME="小明"
if [ "$NAME" == "撇目双人聿" ]
then
echo "Your name is 撇目双人聿"
else
echo "Your name is NOT 撇目双人聿"
fi
else-if
语句
NAME="小明"
if [ "$NAME" == "撇目双人聿" ]
then
echo "Your name is 撇目双人聿"
elif [ "$NAME" == "小明" ]
then
echo "Your name is 小明"
else
echo "Your name is NOT 撇目双人聿 or 小明"
fi
- 比较大小的表示
NUM1=3
NUM2=5
if [ "$NUM1" -gt "$NUM2" ]
then
echo "$NUM1 大于 $NUM2"
else
echo "$NUM1 小于 $NUM2"
fi
# 符号
# -eq: 如果值1与值2相等 返回 true
# -ne: 如果值1与值2不相等 返回 true
# -gt: 如果值1大于值2 返回 true
# -ge: 如果值1大于或等于值2 返回 true
# -lt: 如果值1小于值2 返回 true
# -le: 如果值1小于或等于值2 返回 true
- 文件的状态
FILE_NAME="test.txt"
if [ -f "$FILE_NAME" ]
then
echo "$FILE_NAME 是一个文件"
else
echo "$FILE_NAME 不是一个文件"
fi
# 查看文件各种状态的符号
# -d “filename” 如果该文件是一个目录返回 true
# -e “filename” 如果存在该文件返回 true
# -f “filename” 如果提供的字符串是一个文件返回 true
# -r “filename” 如果该文件是可读的返回 true
# -s “filename” 如果该文件不为空返回 true
# -u “filename” 如果该文件设置了用户id返回 true
# -w “filename” 如果该文件是可写的返回 true
# -x “filename” 如果该文件是可执行的返回 true
case
语句
read -p "你学会Shell脚本了吗 Y/N " ANSWER
case "$ANSWER" in
[yY] | [yY][eE][sS])
echo "恭喜你,你真棒! :)"
;;
[nN] | [nN][oO])
echo "那请继续努力吧!"
;;
*)
echo "请输入:Y/y or N/n"
;;
esac
for
循环语句
FRUITS="苹果 香蕉 葡萄 西瓜 梨"
for FRUIT in $FRUITS
do
echo "Hello $FRUITS"
done
for
循环例子: 批量重命名文件名
FILES=$(ls *.txt)
NEW="new"
for FILE in $FILES
do
echo "重命名 $FILE 为 new-$FILE"
mv $FILE $NEW-$FILE
done
while
循环, 例如:一行一行读取文件内容
LINE=1
while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "./new-1.txt"
- 定义并使用一个不带参数的简单函数
# 定义一个名为sayHello的函数
function sayHello() {
echo "Hello World"
}
# 调用sayHello函数
sayHello
- 定义并使用一个带参数的函数
# 定义一个名为greet的函数
function greet() {
echo "你好, 我叫 $1,今年 $2 岁"
}
# 使用函数,只需要在后面带上参数即可
# 注意每个参数要以空格区分,不然会被识别成一个参数
greet "小明" "25"
- 创建一个文件夹并写入一个内容到一个文件
mkdir hello
touch "hello/world.txt"
echo "Hello World" >> "hello/world.txt"
echo "Create hello/world.txt!"
网上有非常多的教程可以进一步了解。
有不懂的地方可以去多查教程。
这个网站里面的内容简洁易懂:https://www.shellscript.sh