Estou tentando associar todos os argumentos a uma função Bash em uma única seqüência de caracteres com espaços que separam cada argumento. Também preciso que a string inclua aspas simples em toda a string.
Aqui está o que eu tenho até agora ...
$array=("$@")
str="\'"
for arg in "${array[@]}"; do
let $str=$str+$arg+" "
done
let $str=$str+"\'"
Obviamente, isso não funciona, mas eu estou querendo saber se existe uma maneira de conseguir isso?
fonte
cd "$*"
que será bom o suficiente.cdm(){ str="$*"; cd "$str"; }
ou, como Scott sugerecdm(){ cd "$*"; }
,. Além disso, esteja ciente de que$*
substitui vários espaços consecutivos por um único espaço. Se o nome do diretório pode ter vários espaços consecutivos, tabulações ou novas linhas, esses caracteres realmente precisam ser escapados antes de serem passados para acdm
função.cdm
como em:cdm 'test 2 trial 1'
. Isto irá lidar com toda a mansão de nomes estranhos. No entanto, desde que os espaços em branco sejam limitados a espaços únicos,cdm
ele poderá ser executado comocdm test 2 trial 1
.É mais fácil do que você pensa:
chmod + x isso e execute-o:
fonte