#!/bin/sh
read -p "Enter sequence: " seq
for char in $seq; do
echo "$char"
done
我从标准输入中读取“字符”序列。例如,让它为1234(),
我想将其更改为:
'1' '2' '3' '4' '(' ')' ','
我不想回应这个序列。我需要它才能拥有这个新价值。
是否可以在标准sh脚本中使用?
答案 0 :(得分:1)
您可以使用sed
(1):
seq=`printf "%s\n" "$seq" | sed 's/./ &/g'`
答案 1 :(得分:1)
我感到很惊讶,但这对我的所有贝壳和奇怪的角色都有效(包括例如-
,(
,)
)(:
除外):
iterate_over_chars()
{
#reset OPTIND in case this is going to be used multiple times
#(doable without local (which isn't POSIX) but local is nice and very portable)
local seq="$1" OPTIND=1
while getopts "$seq" opt "-$seq"; do
echo "$opt"
done
}
printf '%s\n' Enter sequence 2>/dev/null
read seq #read -p isn't exactly POSIX
iterate_over_chars "$seq"
我们的想法是在单词前加上-
,然后将该单词视为选项组。