在 bash 中将文件名打印到脚本中
print filenames into scripts in bash
如何将目录中文件的每个名称打印成字符串并制作新脚本?
打印每个文件名
for i in `ls new_manifest*`; do echo $i; done
但是当我尝试用 $i 打印字符串的其余部分时,这似乎不起作用!
for i in `ls filenames*`; do
printf
'#!/bin/bash
#$ -cwd
#$ -j y
#$ -S /bin/bash
#$ -pe threaded 8
$HOME/bin/program -vv -c $HOME/program.key -d $i --max 10' > $HOME/Scripts/$i.sh; done
当我在 $i 前使用 echo 或反斜杠时也不起作用。
您需要将 printf
的格式保持在同一行并将 $i
保持在单引号之外:
for i in filenames*; do
printf '#!/bin/bash
#$ -cwd
#$ -j y
#$ -S /bin/bash
#$ -pe threaded 8
$HOME/bin/program -vv -c $HOME/program.key -d '"$i"' --max 10\n'
done
如何将目录中文件的每个名称打印成字符串并制作新脚本?
打印每个文件名
for i in `ls new_manifest*`; do echo $i; done
但是当我尝试用 $i 打印字符串的其余部分时,这似乎不起作用!
for i in `ls filenames*`; do
printf
'#!/bin/bash
#$ -cwd
#$ -j y
#$ -S /bin/bash
#$ -pe threaded 8
$HOME/bin/program -vv -c $HOME/program.key -d $i --max 10' > $HOME/Scripts/$i.sh; done
当我在 $i 前使用 echo 或反斜杠时也不起作用。
您需要将 printf
的格式保持在同一行并将 $i
保持在单引号之外:
for i in filenames*; do
printf '#!/bin/bash
#$ -cwd
#$ -j y
#$ -S /bin/bash
#$ -pe threaded 8
$HOME/bin/program -vv -c $HOME/program.key -d '"$i"' --max 10\n'
done