Я написал скрипт для изменения каталога (cd), прочитав значение для cd из файла. Но когда я запускаю этот скрипт, я сталкиваюсь с ошибкой «Нет такого файла или каталога».Cd 'ing в каталог, прочитав аргумент для' cd 'из файла
Это сценарий, я написал:
#!/bin/bash
while read line
do
IN=$line
set -- "$IN"
IFS=":"; declare -a Array=($*)
echo "File location : ${Array[1]}"
location=${Array[1]}
echo "Location : $location"
cd "$location"
echo "Pwd :"
pwd
done < location.properties
Содержание location.properties файла:
A:~/Downloads
Выход:
File location : ~/Downloads
Location : ~/Downloads
./script.sh: line 10: cd: ~/Downloads: No such file or directory
Pwd :
/home/path/to/current/dir
И эхо заявления печати расположение правильно, но cd к нему не удается. Любая помощь приветствуется! Заранее спасибо!
«Расширение тильды применяется только в том случае, если« ~ »не кавыдается». http://mywiki.wooledge.org/BashPitfalls#echo_.22.2BAH4.22 – fedorqui
BTW - 'Array = ($ *)' очень сломан. Вероятно, вам нужно «Array = (« $ @ »)', если вы хотите сохранить аргументы с указанными/экранированными пробелами, подстановочными знаками и т. Д. Это означает, что у вас есть все основания копировать содержимое в отдельный массив вообще, см. здесь. –
Кстати - какая у тебя раковина? Я принимал POSIX-совместимый ksh-производный, но если это что-то не-POSIX, такое как zsh, это может изменить ситуацию. –