Shell编程之循环语句与echo的用法

Shell编程之循环语句与echo的用法

目录

一、echo用法

1. echo常用选项

echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上

2. 常用的转义字符

常用的转义字符 说明
\b 转义后相当于按退格键(backspace),但前提是“\b”后面存在字符;“\b”表示删除前一个字符,“\b\b”表示删除前两个字符
\c 不换行输出。在“\c”后面不存在字符的情况下,作用相当于echo -n;但是当“\c”后面仍然存在字符时,“\c”后面的字符将不会被输出
\n 换行,被输出的字符从“\n”处开始另起一行
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾
\v 同/f
\t 转以后表示插入tab,即横向制表符
\r 光标移至行首,但不换行,相当于使用“\r”以后的字符覆盖“\r”之前同等长度的字符:但是当“\r”后面不存在任何字符时,“\r”前面的字符不会被覆盖
\ 表示插入“\”本身

3. 特殊符号%、#的用法

a=`echo '"1,2,3,4"`
echo ${a5,*}      #从最后倒数到最短的匹配部分(用%)后面的逗号的地方被删除
1,2,3

echo ${a%%,*}     #从最后倒数到最长的匹配部分(用%%)后面的逗号的地方都被删除
1

echo ${a#*,}      #从开头到最短的匹配部分(用#)后面的逗号的地方呗删除
2,3,4

echo ${a##*,}     #从开头到最长的匹配部分(用##)后面的逗号的地方呗删除

二、循环语句

1. for循环语句

读取不同的变量值,用来逐个执行同一组命令

graph LR A[for 变量名 in 取值列表] -->|do| B[命令序列] B -->|操作对象| C[取值列表] B -->|取值用完| D[done结束循环] C -->|循环操作| A E[for循环流程图]
for 变量名 in 取值列表
do
  命令序列
done

例如:

for username in `cat /root/username.txt`
read -p "请输入密码:" passwd
do
  if grep "$username:" /etc/passwd &> /dev/null;then
    echo "该用户$username已存在,取消新建$username用户"
  else
    echo "该用户$username不存在,正在为您创建新用户$username"
    useradd $username && echo $passwd | passwd --stdin $username &> /dev/null
    echo "新用户$username创建成功"
  fi
done

2. while循环语句

重复测试某个条件,只要条件成立则反复执行

graph LR A{while 条件测试操作} -->|条件成立| B[命令序列] A -->|条件不成立| C[done 结束循环] B -->|回到循环| A D[while循环流程图]
while 条件测试操作
do
  命令序列
done

例如:

a=1
while [ $a -le 10 ]
do
  useradd newuser$a
  echo 123456 | passwd --stdin newuser$a
  let a++      #循环规则一定要写,否则将反复执行第一个变量
done

3. until循环语句

重复测试某个条件,只要条件不成立则反复执行

graph LR A{until 条件测试操作} -->|条件成立| B[done 结束循环] A -->|条件不成立| C[do 命令序列] C -->|回到循环| A D[until循环流程图]
until 条件测试操作
do
  命令序列
done

例如:

sum=0
a=1
until [ $a -gt 50 ]
do
  sum=$[$sum + $a]
  let a++
done
上一篇:多层for循环之显示图形


下一篇:04_SHELL编程之循环语句_2