我的脚本应该获取一个字符串并在新行中打印每个字符(包括空格,!@#$等)
该脚本适用于标准输入,但在字符串
中出现一些特殊字符时失败这是我的剧本
#!/bin/bash
if (($#!=1)); then
echo Please enter one string
exit 0
fi
string="$1"
num=`expr length $string`
for (( i=1; i<=num; i++ )); do
x=`expr substr $string $i 1`
echo "$x"
done
exit 0
怎么了?
答案 0 :(得分:3)
要在BASH中打印每个字符,您可以在不调用任何外部实用程序的情况下执行此操作:
for ((i=0; i<${#string}; i++)); do
echo "${string:i:1}"
done
答案 1 :(得分:1)
除非您想要分词和扩展名扩展,否则请引用您的变量:
num=$(expr length "$string")
x=$(expr substr "$string" "$i" 1)