0

我需要找到一些带有 的图像文件$tempThumb,但由于某种原因,以下代码在我的 bash 脚本中不起作用,尽管我在终端中尝试了相同的操作并且它确实有效

randomStr=$(date | md5sum | tr -d ' -')
tempThumb=$(echo "$randomStr _ tempthumb" | tr -d ' ')
ls /dev/shm/$tempThumb*.jpg | sort -t '-' -n -k 2 | tr '\n' ' '
4

1 回答 1

1

您可以将第二行简化为:

tempThumb="${randomStr}_tempthumb"

你甚至可以使用:

tempThumb=$(date | md5sum | tr -d ' -')_tempthumb

替换前两行。

不过,这并不能解释问题。是/bin/sh指向bash或指向其他外壳的链接吗?[答案:它是一个链接dash。]

剧本有shebang线吗?它列出#!/bin/bash#!/bin/sh其他什么?(在 Mac OS X 上,两者都可以根据需要在脚本上工作/bin/bash/bin/sh

tt="cs"
ls $HOME/soq/$tt*.c

列出以 . 开头cs和结尾.c的3 个文件$HOME/soq。)

[这]实际上解决了我的问题-ls /dev/shm/${tempThumb}*.jpg

耐人寻味——很高兴能帮上忙。我刚刚从 Debian 下载并构建了 dash 0.5.7-3 并在 Mac OS X 10.8.4 上构建了它,然后在上面的两行脚本中使用它,它dashsh. 我认为使用${tempThumb}是一个好主意,但我没有很好的解释为什么你会遇到这个问题。也许您对 shell 有非默认设置?

于 2013-08-01T21:58:31.407 回答