Shell 是否可以在变量中捕捉空格?

Shell 是否可以在变量中捕捉空格?,shell,Shell,如标题所述?可能吗?我使用了以下代码,但它无法确定变量是否有空格。希望有人能帮助我 for file in `ls *.[Pp][Dd][Ff]` do var1=`echo "$file" | sed -e "s/.*-\(.*\)-.*/\1/"` var2="document.num=.*$var1" var3=`grep -l ${var2} *xml` case "$var3" in *\ *) echo $var3 >> haha ;; *)

如标题所述?可能吗?我使用了以下代码,但它无法确定变量是否有空格。希望有人能帮助我

for file in `ls *.[Pp][Dd][Ff]`
do
  var1=`echo "$file" | sed -e "s/.*-\(.*\)-.*/\1/"`
  var2="document.num=.*$var1"
  var3=`grep -l ${var2} *xml`

case "$var3" in
*\ *)
    echo $var3 >> haha
    ;;
*)
    var4=`echo "$var3" | sed -e "s/-.*//"`
        varName="$var4.$file"
        echo ${var2}
        echo $var3
        mv $file $varName
    ;;
esac
为我工作:

var="ab"
#var="a b"

case "$var" in
*\ * ) echo "Has space" ;;
* ) echo "No space" ;;
esac
根据注释掉的变量,它打印
有空格
无空格

使用Bash正则表达式测试 如果您想灵活地定义空白,可以使用Bash的内置正则表达式测试。例如:

# Variable has a space.
foo=' '
[[ $foo =~ [[:space:]] ]]; echo $?
0

# Variable has a tab.
foo=$'\t'
[[ $foo =~ [[:space:]] ]]; echo $?
0

# Variable has no whitespace because it's empty.
foo=''
[[ $foo =~ [[:space:]] ]]; echo $?
1

这不是一个关于文件名的问题。@l0b0他遇到了问题,因为他正在尝试而不是使用文件全局。但这仍然是一个有趣的问题。@CodeGnome是的,我的答案是不解析
ls
,但是这个问题没有用。