Bash脚本 - 在新行中打印每个字符

时间:2014-06-07 17:03:13

标签: bash

我的脚本应该获取一个字符串并在新行中打印每个字符(包括空格,!@#$等)

该脚本适用于标准输入,但在字符串

中出现一些特殊字符时失败

这是我的剧本

#!/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

怎么了?

2 个答案:

答案 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)