有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
您好,我想要一个简单的shell脚本,从文件的给定路径中查找文件的名称.喜欢
$path = "/var/www/html/test.php";
Run Code Online (Sandbox Code Playgroud)
那么我想在一些变量中获得价值"测试".也只有.php文件存在.我正在使用bash shell.谢谢
我的存储库的几个子目录中有多个.md文件。它们都有相同的命名约定,例如seminar1/slides.md、seminar2/slides.md等。这些*.md文件需要使用 pandoc 进行处理。我希望每次提交到存储库时都会自动执行此操作,并决定将其实现为在 Github 上运行的操作。
我已将以下工作流程创建为 .yml 文件,GitHub 将其识别为操作。如果我有一个子目录(例如 ),它会起作用/seminar1/*.md,但如果有更多子目录,它就会失败。
name: Make slides
on: push
jobs:
convert_via_pandoc:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
ref: slides
- run: |
echo "::set-env name=FILELIST::$(printf '"%s"' seminar*/*.md)"
- uses: docker://pandoc/latex:2.9
with:
args: -t beamer --output=${{env.FILELIST}}.pdf ${{env.FILELIST}}
- uses: actions/upload-artifact@v2
with:
name: seminar-slides
path: seminar*/*.md.pdf
Run Code Online (Sandbox Code Playgroud)
如何让脚本检测所有文件seminar*/*.md并对其进行操作?
另外,我需要一些一般可用性方面的帮助:
seminar1/bridge.jpg不仅仅是包含bridge.jpg. 如何更改每个的工作目录$env.FILELIST?$env.FILELIST?我正在使用这一行将 mp4 文件批量转换为 webm 文件。对于所有 mp4 文件,我需要输出文件的名称相同但扩展名为 .webm。例如,如果我有 video1.mp4 和 video2.mp4,那么转换后我需要两个文件,即 video1.webm 和 video2.webm。我如何使用 bash 脚本实现这一目标?
for f in *.mp4; do ffmpeg -i "$f" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "$f".webm; done
Run Code Online (Sandbox Code Playgroud)
上面的代码将输出文件更改为 video1.mp4.webm。谢谢!