https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash
很多使用中文输出的程序,在shell中,中文可能会出现编码问题。 将字符集设置为中文utf8,这个语句可以放到bash_profile中,启时自动设置。
export LANG="zh_CN.UTF-8"
如果还有乱码,需要注意下终端程序的编码设置。
命令成功返回值为0
command
if [ $? -eq 0 ]; then
# 命令执行成功
fi
if [[ 1 -eq 1 ]] && [[ 1 -ne 2 ]]
then
echo "ok"
fi
for i in $(seq 1 10)
do
echo $i
done
for i in `ls /root`
do
echo $i
done
for i in `ls /root`;do echo $i;done
比如类似上面的文本,for循环时,会将空格也截断。 这需要使用一个控制符IFS来处理,可以指定分割符。 默认截断: - 空格 - 制表符 - 换行符 示例
IFS=$'\n' #只希望截断回车,注意回车前面必须加$
IFS=$'\n ' #截断回车和空格
x="a b c d"
array=($x) #字符串转数组
echo 直接输出数组,${array} #打印第一个
echo 数组元素,${array[2]}
echo 数组所有内容,${array[*]} #注意,用这个方式传参时,会被打撒
echo 数组长度,${#array[@]} # 获取数组长度
printf "\n\n"
# 数组遍历
echo "=====array下标是@,加不加引号没区别====="
for i in ${array[@]}
do
echo print,$i
done
printf "\n\n"
echo "=====array下标是*,加了引号,作为一行字符串====="
for i in "${array[*]}"
do
echo print,$i
done
printf "\n\n"
echo "=====array下标是*,不加引号====="
for i in ${array[*]}
do
echo print,$i
done