在 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