我想使用空格作为分隔符来拆分包含
-
作为第一个字符的字符串。但下面的代码似乎不起作用。如果我删除 -
字符,那么它会正确分割。这是脚本
#!/bin/bash
string="-e -/a/b/c/d"
arr=($string)
arrLen=${#arr[@]}
echo $arrLen
echo ${arr[0]} #prints empty
if [ $arrLen = 2 ] && [ ${arr[0]} = "-e" ]; then #this condition gets passed surprisingly
echo "Hi ${arr[1]}"
fi
输出
2
Hi -a/b/c/d
如果您有更复杂的需求或想要对分隔符进行更多控制,也可以使用 awk 或 sed 来分割字符串。
#!/bin/bash
string="-e -/a/b/c/d"
# Use awk to split by spaces
arr=($(echo $string | awk '{print $1,$2}'))
arrLen=${#arr[@]}
echo $arrLen
echo ${arr[0]} # should correctly print "-e"
if [ $arrLen = 2 ] && [ "${arr[0]}" = "-e" ]; then
echo "Hi ${arr[1]}"
fi