Код: Выделить всё
~/PATH_TO_FILE/FILEв функции происходит парсинг на путь и имя файла, при попытке перейти в каталог, выдается сообщение ошибки
если тут же копипастом вставить к ком. строку просмотр каталога 'ls -ld' - то каталог видится
если так же сделать cd - тоже все нормально
если вызывающий аргумент подрихтовать и тильду заменить на нормальный путь /home/$USER
то в функции переходит происходит нормально
Код: Выделить всё
func '~/PATH_TO_FILE/FILE' - error
func '/home/$USER/PATH_TO_FILE/FILE' - OKесли просто в терминале набрать переход с тильдой то все нормально:
Код: Выделить всё
cd ~/PATH_TO_FILE/далее кусок функции и эхо вывод
Код: Выделить всё
#!/bin/sh
func()
{
SCRIPT=$(basename "$1")
SCRIPT_DIR=$(dirname "$1")
echo "
'$1'
'$SCRIPT_DIR'
"
# пробовал "оба варианта"
cd $SCRIPT_DIR
cd $(dirname "$1")
...
}вызов функции
Код: Выделить всё
func '~/PATH_TO_FILE/FILE' - error
func '/home/$USER/PATH_TO_FILE/FILE' - OK
...
run_prc.sh: line 80: cd: ~/PATH_TO_FILE: No such file or directory
cd ~/PATH_TO_FILE - OK
...менять путь - не катит
/bin/bash-3.1.17
/bin/bash-3.2.57
/bin/bash-4.3.30
slackware-12.2
UPDATE вторая часть топика
// run.sh
Код: Выделить всё
#!/bin/sh
clear; set -e
func()
{
echo "ARG1 = $1"
cd $1
pwd
}
LST=01.lst
while read LINE
do
echo "LINE = $LINE"
ARG=$(echo $LINE | cut -d ' ' -f1)
ARG=${ARG// /}
func $ARG
done < $LST// 01.lst
Код: Выделить всё
~/tmp sss// вывод
Код: Выделить всё
LINE = ~/tmp sss
ARG1 = ~/tmp
./run.sh: line 7: cd: ~/tmp: No such file or directory