I/O类
输出
echo
打印一个表达式或变量
echo Hello
echo $a
echo需要使用-e参数来打印转移字符
a='\\bcd'
echo $a // \\bcd
echo -e $a // \bcd
一般的每个echo命令都会在终端上新起一行,但是-n选项将会阻止新起一行。
echo ;echo;echoHello
echo命令可以作为一系列命令的管道输入。
#!/bin/bash
VAR="SDFDS45646TXTtxtsdfds566"
if echo "$VAR"| grep -q txt
then
echo "$VARcontains the substring sequence \"txt\""
else
echo "$VARIS NULL"
fi
$IFS(内部域分隔符)一般都会将\n(换行符)包含在它的空白字符集合中。Bash因此会根据参数中的换行来分离命令的输出。
然后echo将以空格代替换行来输出这些参数。
$ ls -l total 8 -rwxr-xr-x 1 zghw zghw 165 8月 1 20:55 echo-1.sh -rwxr-xr-x 1 zghw zghw 246 8月 1 20:03 spawn.sh $ echo `ls -l` total 8 -rwxr-xr-x 1 zghw zghw 165 8月 1 20:55 echo-1.sh -rwxr-xr-x 1 zghw zghw 246 8月 1 20:03 spawn.sh
read
从stdin中读取一个变量的值,也就是与键盘交互取得变量的值。使用-a参数可以取得数组变量。#!/bin/bash echo -n "Enter the value of variable 'var1'" read var1 echo "var1=$var1" echo -n "Enter the values of variables 'var2' 'var3' (separated by a space or tab):" read var2 var3 echo "var2 = $var2 var3 = $var3" exit 0
一个不带变量参数的read命令,将把来自键盘的输入存入到专用变量$REPLY中.#!/bin/bash echo -n "Enter a var:" read var echo "$var" echo "\"var1\"="$var"" echo "$var1" echo -n "Enter other var:" read echo "REPLY" #!/bin/bash read var1 < read-1.sh echo "var1=$var1" while read line do echo "$line" done < read-1.sh echo "----------------------" #使用$IFS(内部域分隔变量)来将每行的输入单独的放到“read”中 #如果不想使用默认空白的话 echo "List of all users:" OIFS=$IFS; IFS=: # $/etc/passwd 使用“:”作为域分隔符 while read name passwd uid gid fullname ignore do echo "name=$name passwd=$passwd uid=$uid gid=$gid fullname=$fullname ignore=$ignore" done < /etc/passwd #I/O重定向 echo "-------------------" IFS=$OIFS #恢复原始的IFS echo "-------------------" #在循环内部设置$IFS变量而不是把原始的$IFS #+保存在临时变量中 echo "List of all users:" while IFS=: read name passwd uid gid fullname ignore do echo "name=$name passwd=$passwd uid=$uid gid=$gid fullname=$fullname ignore=$ignore" done < /etc/passwd #I/O重定向 echo "\$IFS still $IFS" echo "-------------------" exit 0