我需要找到一些带有 的图像文件$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' ' '
您可以将第二行简化为:
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 上构建了它,然后在上面的两行脚本中使用它,它dash
和sh
. 我认为使用${tempThumb}
是一个好主意,但我没有很好的解释为什么你会遇到这个问题。也许您对 shell 有非默认设置?