Код: Выделить всё
~/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