Как насчет просто:
mydir
Просто определите переменную, как вы уже сделали, и создайте функцию:
mydir=/etc/insserv.conf.d/testname
mydir(){ cd "$mydir"; }
Готово.
Альтернативой является использование псевдонима:
alias mydir='cd "$mydir"'
Можно использовать bash для перебора всех возможных входных файлов (, например. 001.xyz, 002.xyz и т. д. )в каталоге. Может быть проще поместить его в отдельный сценарий BASH, чтобы организовать то, что вы используете (, например. пакет _run.sh ).
Например,вы можете использовать цикл for
, чтобы просмотреть каждый файл xyz в текущем каталоге и запустить на нем ваш скрипт abc.sh
:
for input_file in *.xyz
do
sh abc.sh $input_file
done
Вы упомянули, что у вас может быть несколько каталогов. Вы можете расширить подстановочный знак (*), чтобы также учитывать каталоги (относительно вашего текущего положения ):
.for input_file in */*.xyz
do
sh abc.sh $input_file
done
Если ваш скрипт должен быть запущен в том же каталоге, что и входной файл, вы также можете выполнять различные действия (, например.cd
)внутри цикла, например вот так:
# remember the original directory before the for loop
original_directory = $(pwd)
# loop through all valid directories containing xyz files
for input_file in */*.xyz
do
# enter the directory of containing the xyz file
cd $(dirname $input_file)
# run the script on the xyz file
sh abc.sh $(basename $input_file)
# return to the original directory
cd ${original_directory}
done
Это может стать более или менее сложным в зависимости от того, что вы хотите сделать, и ваших спецификаций, однако я надеюсь, что это даст вам представление о том, как циклы BASH for
могут позволить вам автоматически повторять команды.