Разделение небольшого файла на сегменты по 512 байт изменяет его, а разделение на сегменты по 1 КБ — нет

Разберем эту команду:

cat $(pwd)/$(basename "$0")
  • $(pwd)расширяется до текущего каталога, в котором вы находитесь.
  • $(basename "$0")заменяется на имя файла запущенного скрипта.
  • (Кроме того, их действительно следует заключать в кавычки, потому что они не будут работать с путями с пробелами и т. д. в них.)

Следовательно, если вы запускаете скрипт из того же каталога, это должно работать.

$ cd /tmp
$ cat test.sh
#!/bin/bash
cat $(pwd)/$(basename "$0")
$./test.sh
#!/bin/bash
cat $(pwd)/$(basename "$0")

Однако, если текущий каталог , а не каталог, в котором находится скрипт, эта команда завершится ошибкой.

$ cd /home
$ /tmp/test.sh
cat: /home/test.sh: No such file or directory

Вы можете видеть, что pwdв команде ищет в текущем каталоге , а не в том, где находится скрипт.

Для решения просто используйте $0.

cat "$0"

Это проще и будет работать независимо от текущего каталога.

16
04.11.2021, 18:28
0 ответов

Теги

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