【问题标题】:Get the list of files in a directory in a shell script? [duplicate]获取shell脚本中目录中的文件列表? [复制]
【发布时间】:2019-12-23 11:22:34
【问题描述】:

这是我编写的脚本,只有“FOR LOOP”不起作用 -
出现此错误 - 请建议我如何进一步操作。
/var/folders/g9/bgcqz8jn4b7gm47k95f15lvm0000gp/T/jenkins5094260696780533763.sh:第 21 行:${~/Library/MobileDevice/Provisioning\ Profiles/}*:错误替换 构建步骤“执行 shell”将构建标记为失败

#!/bin/bash

. ~/.profile
xcode9

security find-identity -p codesigning -v

#ls '/Users/airwatch/Library/MobileDevice/Provisioning Profiles/'

ls ~/Library/MobileDevice/Provisioning\ Profiles/

output=$(ls ~/Library/MobileDevice/Provisioning\ Profiles/ | wc -l)
echo "Total provisioning profiles :" $output

#cat ~/Library/MobileDevice/Provisioning\ Profiles/Accenture_Fit_Distribution.mobileprovision


for entry in "${~/Library/MobileDevice/Provisioning\ Profiles/}*"
do
  echo "$entry"
done

【问题讨论】:

  • 您对${<path>} todo 有什么期望?语法需要一个变量名而不是路径
  • 要求脚本来获取您的.profile 通常是一种不好的做法。无论如何,此脚本中似乎没有任何内容取决于您的个人资料中的任何内容。

标签: bash shell for-loop


【解决方案1】:

正如 jeb 在他的评论中已经解释的那样,如果您在 bash 中写入 ${...something...},则 ...something... 必须是变量名,可选地后跟一些参数替换(如解释在 bash 手册页的 PARAMETERS 部分中。在您的情况下,${} 之间写的不是变量名,因此会出现错误。

你可能想要类似的东西

for entry in ~/Library/MobileDevice/Provisioning\ Profiles/*

【讨论】:

    【解决方案2】:

    它对我有用 -

    用于“$(ls ~/Library/MobileDevice/Provisioning\ Profiles/)”中的条目 做 回声“$条目” 完成

    【讨论】:

    • 在这里,您使用$(ls ....) 而不是${....},如您的帖子中所述。但是,如果 Provisioning Profiles 包含名称包含空格或换行符的文件,这将产生有趣的结果。一般来说,安全(也是最简单的方法)是我在回答中概述的方法。
    【解决方案3】:

    你能不能试着把它改成这样:

    ...
    
    
    dir=~/Library/MobileDevice/Provisioning\ Profiles
    for entry in "$dir"/*
    do
      echo "$entry"
    done
    
    [Update: Fixed error with comments from user1934428]
    
    

    【讨论】:

    • 这行不通。以这种方式使用时, ~ 不会扩展到主目录(由于引用)。此外,= 符号周围的空格也不正确。如果写成dir=~/Library/MobileDevice/Provisioning\ Profiles?,你的解决方案会起作用
    • @user1934428 是的,是的:我在本地尝试使用另一个文件夹,然后在此处发布之前,我复制/粘贴了原始帖子中的行并弄乱了答案。谢谢!
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2015-05-24
    • 2017-04-09
    • 2012-09-24
    • 1970-01-01
    • 2012-04-22
    • 2016-07-06
    • 2014-06-06
    相关资源
    最近更新 更多