我正在尝试使用shell脚本验证由空格分隔的多个输入(在下面的情况下为两个磁盘名称)。但是,我没有成功。有人能帮我吗?
read DISK
if [ "${1}" = "" ] || [ "${2}" = "" ]
then
printf "The Disk pairs cannot be left blank. Exiting script!!!"
exit 1
else
TMP=$DISK
printf "The disks entered are $TMP"
fi
答案 0 :(得分:1)
对于ksh93,您可以使用
read -A disks
if [[ ${#disks[@]} -ne 2 ]]; then
print -u2 "You need to enter 2 disks"
exit 1
else
print "You entered: ${disks[*]}"
fi
对于ksh88,请使用位置参数
read disks
set -- $disks
if [[ $# -ne 2 ]]; then
print -u2 "You need to enter 2 disks"
exit 1
else
print "You entered: $disks"
fi
答案 1 :(得分:0)
变量${1}
和${2}
是命令行参数,与上一个读命令无关。有不同的方法来使用DISK变量。
一旦你读了DISK变量,我就会选择像
echo "${DISK}" | while read disk1 disk2 otherfields; do
echo "disk1=${disk1}, disk2=${disk2}"
done
# or better
disk1="${DISK% *}"; echo "${disk1}"
disk2="${DISK#* }"; echo "${disk2}"
# or worse
disk1=$(echo "${DISK}" | cut -d" " -f1)
disk2=$(echo "${DISK}" | cut -d" " -f2)
如果您已经知道要拆分字段,则可以更改第一个读取命令。将read DISK
替换为
read disk1 disk2 remaining_input