Что такое $ {Tmp0} в скрипте sh? - PullRequest
0 голосов
/ 21 октября 2011

В сценарии оболочки я нашел следующую строку кода:

rm -f "${Tmp0}"

Это одна из первых строк в сценарии, и я не знаком сПеременная Tmp0.Это стандартное отображение оболочки на что-то конкретное?Я сделал несколько поисков в Google, и я не могу найти хорошего объяснения.

Я подозреваю, что это пережиток предыдущей версии скрипта (не нужно видеть все это, это не имеет значения), посколькунигде больше не вижу ссылки на эту переменную.

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

У него нет предопределенного значения, но это не значит, что оно бесполезно. Если кто-то экспортирует эту переменную перед вызовом этого скрипта, он удалит указанный файл. Также, если этот скрипт source s другой файл, эта переменная может быть определена там.

В любом случае, если ни одно из двух условий не выполняется, то это действительно может быть остаток.

1 голос
/ 21 октября 2011

Стандартного значения для переменной ${Tmp0}.

не существует. Обычно до этого будет присвоено значение Tmp0, например:

Tmp0="${TMPDIR:-/tmp}/tmp.$$.0"               # Generate a file name
rm -f "${Tmp0}"                               # Ensure file does not exist!
trap 'rm -f "${Tmp0}"; exit 1' 0 1 2 3 13 15  # Ensure file is cleaned up on early exit

...code using $Tmp0 as a temporary file...

rm -f "${Tmp0}"   # Clean up
trap 0            # Allow exit status other than 1
exit $status      # Exit with specified status

Еслиназначение не видно, то это, вероятно, остатки какого-то рода, или чья-то не очень тщательно выбранная схема именования переменных среды (и несколько сомнительная обработка файлов; сценарии, которые безоговорочно удаляют файлы, редко бывают популярны долго).*

0 голосов
/ 21 октября 2011

Это , а не жестко заданная переменная оболочки, если вы это имели в виду.

Вы можете добавить простую отладку в код для печатисодержимое переменной и эта информация может дать вам некоторые подсказки о ее назначении:

echo "DEBUG: Tmp0 content is: ${Tmp0}"
rm -f "${Tmp0}" 
...