Это определенно похоже на задачу x -y . Было бы полезно узнать, какова конечная цель этого, но:
var
на самом деле является массивом из-за синтаксиса var=(... )
${var[@]}
), что в этом примере не имеет большого значения, так как все в любом случае находится в одном элементе Самая большая проблема, по-видимому, заключается в том, как логическое И цитируется и интерпретируется. Если вы не заключаете его в кавычки при добавлении в массив, оболочка попытается его оценить, а если вы его заключите в кавычки, он останется литеральной строкой, предотвращающей вычисление. Один из способов, которым я смог решить эту (за исключением использования eval
), заключается в следующем:
script.sh
#!/bin/bash
bash -c "$(echo $@)"
$ tree
.
└── script.sh
0 directories, 1 file
$ cmd=(echo hello \&\& mkdir test)
$./script.sh "${cmd[@]}"
hello
$ tree
.
├── script.sh
└── test
1 directory, 1 file