sh -c 'TMP=??; echo "$TMP"'
С двойными кавычками вокруг кода sh -c
, $TMP
расширяется интерактивной оболочкой перед выполнением кода sh -c
. С одинарными кавычками $TMP
будет развернут внутри оболочки sh
. (Я также правильно процитировал расширение переменной $TMP
дляecho
).
Одинарные кавычки защищают строку от раскрытия переменных.
Если вы не хотите, чтобы ??
рассматривался как шаблон подстановки имени файла внутри скрипта sh -c
, используйте
sh -c 'TMP="??"; echo "$TMP"'
Вы вызываете не -интерактивную оболочку для выполнения вашейfind
-команды.
Не интерактивные -оболочки не имеют истории по умолчанию.
Возможные решения см. в Команда History внутри сценария bash .