Bash tokenizing quoted string with spaces as individual words

后端 未结 3 1370
没有蜡笔的小新
没有蜡笔的小新 2021-01-23 05:59

I\'m trying to execute the following commands:

mkdir \'my dir\'
CMD=\"ls \'my dir\'\"
RESULT=$($CMD)

This results in:

ls: \'my:         


        
3条回答
  •  梦谈多话
    2021-01-23 06:01

    Solution 1: Use sh -c

    mkdir 'my dir'
    CMD="ls 'my dir'" # careful: your example was missing a '
    RESULT=$(sh -c "$CMD")
    

    Solution 2: Declare CMD as an array

    mkdir 'my dir'
    CMD=(ls 'my dir') # array with 2 elements
    RESULT=$("${CMD[@]}")
    

提交回复
热议问题