读取n个字符
(不用输入enter)
read -n 8 var 读入8个字符到变量var
无回显的输入(就是输入的时候啥都看不到 -s
-p显示提示信息
在规定时间输入 -t
read -t 2 var-d设定输入终止符,例如用冒号结束
while循环
例如一个repeat函数,执行功能直到成功为止
例如执行一个下载的命令(有点类似于函数作为参数导入的意思,233)
for循环用法,和C语言一样,233
字符分隔符和迭代器
内部字段分隔符(Internal Field Separator ,IFS),用来把数据流分隔开的符号。
逗号分隔型数值(Comma Separated Value,CSV)
IFS默认是空白字符(空格,制表符和换行),这里修改为逗号,接着再改回来就好……
ata=one,two,three; oldIFS=$IFS; IFS=, #now for item in $data; do echo $item; done IFS=$oldIFS;
while,until,for循环的用法
(条件记得加空格,致命一击)
比较与测试
if和else if的用法
if condition; then commands; else if conditions;then commands; else commands; fi[空格condition空格]
算数比较符
-gt大于 -lt小于 -eq等于 -ge大于或等于 -le小于或等于
n=10; while [ $n -gt 0 ] do if [ $n -ge 5 ]; then echo "n>=5:"$n; else echo "n<5:"$n; fi let n--; done注意 if 条件之后要加 分号!
字符串比较
str1="abcde" str2="abc" str3="abcde" if [[ $str1 > $str2 ]]; then echo $str1">"$str2; else echo $str1"<="$str2; fi if [[ $str1 == $str3 ]]; then echo $str1"="$str3; else echo $str1"!="$str3; fi
判断字符串是否为空或者非空
-z是空 -n非空
str1="" str2="abc" if [[ -z $str1 ]];then echo "\""$str1"\"is empty"; else echo "\""$str1"\"is not empty"; fi if [[ -n $str2 ]];then echo "\""$str2"\"is not empty"; else echo "\""$str2"\"is empty"; fi
文件测试相关
文件系统相关测试我们可以使用不同的条件标志测试不同的文件系统相关的属性。
[ -f $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。
[ -x $var ]:如果给定的变量包含的文件可执行,则返回真。
[ -d $var ]:如果给定的变量包含的是目录,则返回真。
[ -e $var ]:如果给定的变量包含的文件存在,则返回真。
[ -c $var ]:如果给定的变量包含的是一个字符设备文件的路径,则返回真。
[ -b $var ]:如果给定的变量包含的是一个块设备文件的路径,则返回真。
[ -w $var ]:如果给定的变量包含的文件可写,则返回真。
[ -r $var ]:如果给定的变量包含的文件可读,则返回真。
[ -L $var ]:如果给定的变量包含的是一个符号链接,则返回真。
使用方法
fpath="/etc/passwd" if [ -e $fpath ]; then echo File exists; else echo Does not exist; fi
先去吃个晚饭好了