Требуется скопировать список файлов из того же источника:
#!/bin/bash
Elements=('Helium' 'Aluminium' 'Argon') # Items to copy
Source='Hydrogen' # Copy from this file
for x in "${Elements[@]}"; do
cp "$Source" "$x.element"
done
После которого я доберусь:
Aluminium.element Argon.element Helium.element
Они все совместно используют то же содержание Hydrogen
с источника
(или .
) принимает файл в качестве аргументации, вы может попробовать:
source <(echo something)
Ваша исходная команда требует аргумент файла. Вы можете получить его в некоторых оболочках с подстановкой процесса, и это потому, что точно так же оболочка заменяет...
arg=$(echo hi)
...бит echo
в командной строке с выводом подоболочки, в случае подстановки процесса заменяет подоболочку на именованный файл - обычно /dev/fd/62
или что-то в этом роде - какую-то ссылку на файл-дизайнер. В цепочке файловый дескриптор равен 0, так что...
echo 'echo hi' | . /dev/fd/0
... /dev/stdin
или что-то в этом роде должно прекрасно работать на любой Linux системе - и многие другие кроме того. Вы также можете использовать здесь-документы подобным образом:
. /dev/fd/3 3<<HI
$(echo 'echo hi')
HI
Вы можете проверить, как ваш оболочка обрабатывает подстановку, кстати:
(set -x; readlink <(:))
... которая печатает (в bash
):
+ set +x
+ readlink /dev/fd/63
++ :
pipe:[2212581]
... и таким образом мы видим, что оболочка делает подстановку и readlink
читает из анонимной трубки, которая открывается на файл-диспетчере 63.