почему Linux не может видеть мою команду run.sh?

В случае Вашей оценки решения ${f%.*}.mp3 сделан в оболочке, что Вы вызываете целую команду в, не в оболочке, разветвленной xargs. И в Вашей оболочке нет никакой f переменной, ею заменяет пустая строка.

Решение с помощью xargs с-I f:

% cat 1.sh 
#!/bin/sh
f=$1
echo ${f%.*}.mp3
% /bin/ls -1
1.sh
aaa.wma
bbbb.wma
ccccc.wma
% find ./ -name '*.wma' -type f -print0 | xargs -0 -I f ./1.sh f
./aaa.mp3
./ccccc.mp3
./bbbb.mp3

Но я сделал бы это этот путь:

% find ./ -name '*.wma' -type f | sed 's,\.wma$,.mp3,'
2
10.10.2013, 21:03
2 ответа

Необходимо сделать это исполняемым файлом с chmod a+x run.sh и затем попробуйте еще раз.

Это сделает исполняемый файл файла.

2
27.01.2020, 22:14

Наиболее вероятно, что кто-то еще упомянул, в котором файл не является исполняемым файлом. Иногда, это - что-то еще.

Если хижина (#!/bin/sh или эквивалентный), является неправильным, я видел отчет об оболочке file not found или command not found даже при том, что это - там исполняемый файл. Когда я видел его, это был случай сценария жемчуга, который имел #!/usr/local/bin/perl когда perl был в/usr/bin.

Просто изображенный я добавил бы эту другую потенциальную причину.

0
27.01.2020, 22:14

Теги

Похожие вопросы