Это не echo
поведение. Это - поведение удара. Когда Вы используете echo $x
сформируйтесь удар заставляют следующую команду обрабатывать (обработка ␣
как пространство):
echo␣␣hello
Затем эта команда маркируется, и удар получают два маркера: echo
и hello
таким образом вывод справедлив hello
Когда Вы используете echo "$x"
сформируйтесь затем, удар имеет следующее во входе токенизатора:
echo␣"␣hello"
таким образом это имеет два маркера echo
и ␣hello
, таким образом, вывод отличается.
source
встроенная оболочка. find
выполняет команды. Это не может выполнить встроенную оболочку.
Если Вы хотите выполнить внешние программы, просто укажите название программы:
find . -type f -executable -exec '{}' \;
Если это все csh сценарии, испытывающие недостаток в хижине как (#!/bin/env csh
как первая строка), добавьте строку хижины. Если Вы действительно не можете добавить строку хижины, назовите csh явно:
find . -type f -executable -exec tcsh '{}' \;
Если это все csh фрагменты сценария, которые Вы хотите выполнить в текущей оболочке, Вы не можете сделать этого этот путь. Необходимо будет собрать имена с find
и затем получите их.
foreach fragment ("`find . -type f -executable -print`")
source "$fragment"
end
Существует что-то подозрительное об этом требовании во-первых. Фрагменты Shell означали быть полученными, не должен быть исполняемый файл.
Посмотрите это:
127:2:1389633116:user@host:~$ tcsh source foo
source: No such file or directory.
1:3:1389633119:user@host:~$ tcsh
host:~> source foo
foo: No such file or directory.
host:~> exit
0:4:1389633582:user@host:~$ tcsh -c 'source foo'
foo: No such file or directory.
Попробуйте их сами и других. Возможно, осмотр strace
трассировки. Наконец попытайтесь воспользоваться преимуществом и создать обходное решение.
$ find . -type f -executable -exec tcsh -c 'source {}' \;
– 41754
14.01.2014, 10:02