2017-10-12 128 views
0

练习一些的Bash脚本:在ls输出中包含换行符?

1 #!/bin/bash 
    2 
    3 read -p "Input the path to a file or directory: " TARGET_PATH 
    4 
    5 if [ -f "${TARGET_PATH}" ] 
    6 then 
    7  echo "${TARGET_PATH} is a file!" 
    8  echo $(ls ${TARGET_PATH} -l) 
    9 elif [ -d "${TARGET_PATH}" ] 
10 then 
11  echo "${TARGET_PATH} is a directory!" 
12  echo $(ls ${TARGET_PATH} -l) 
13 else 
14  echo "${TARGET_PATH} is not a file or directory." 
15 fi 

这工作按预期如果TARGET_PATH是一个文件,针对它的ls -l命令运行不够精细。

但如果它是一个目录,ls -l的输出将多个项目压缩成一行。

我尝试在该例中迭代ls -l命令,但它将所有内容按空格分隔,因此每个单独的部分都以新行结束。

如果我们在终端输入ls -l,有没有办法输出类似于我们所期望的内容?

+3

变化'回声$(LS $ {TARGET_PATH} -1-)''到LS -l “$ {TARGET_PATH}”' – anubhava

+1

@anubhava当然!!谢谢,我完全忘记了我可以直接编写命令,就像我在终端中写入这些命令一样 –

回答

0

使用-1选项(这是一个数字,而不是小写的L)到ls将使它每行输出一个项目。

ls -1l "${TARGET_PATH}"