テーマ: bash
-
Dry-run and confirmation in admin scripts: PowerShell -WhatIf/-Confirm and a shell --dry-run flag
PowerShell has a built-in mechanism, SupportsShouldProcess, that gives a custom function real -WhatIf and -Confirm switches wired to the same $PSCmdlet.ShouldProcess() call the built-in cmdlets use. Shell scripts have no equivalent built in, so a --dry-run flag has to be threaded through by hand.
-
Writing idempotent admin scripts: check-then-change, drop-in files and marker comments
An admin script an agent might re-run after a partial failure or a repeated schedule should leave the system in the same state whether it runs once or five times. Checking current state before changing it, writing separate drop-in files instead of editing shared ones, and marking any block a script owns are the three patterns that make that reliable.
-
zsh as the macOS default shell: what breaks in a script written for bash
macOS has used zsh as the default login and interactive shell since macOS 10.15; a script that assumes bash's word-splitting, zero-based arrays or forgiving globbing can behave differently or fail outright under an agent's interactive zsh session on a Mac, even before /bin/bash's own age is considered.
-
Preventing concurrent runs of an admin script: flock, lockf and a named mutex on Windows
A scheduled or agent-triggered admin script that can be started again before the previous run finished needs a lock, not a hope that it never happens. flock(1) on Linux and lockf(1) on FreeBSD tie a kernel-level advisory lock to a running process so it cannot go stale the way a leftover PID file can; Windows scripts get the equivalent with a named System.Threading.Mutex.
-
Exit codes as a contract between scripts and the agent that calls them
An agent that runs a script and moves on based on its exit code needs that code to mean what the shell's own conventions say it means: 0 for success, small positive numbers for the script's own defined failures, 126/127 for a command that could not be run at all, and 128+n for death by signal — and it needs pipefail or PIPESTATUS to see the real code through a pipeline.
-
IBM i のオープンソース環境:yum、既定シェルとしての bash、SSH デーモンの起動
IBM がサポートする IBM i 向けオープンソーススタック(Node.js、Python、git、bash など)は、yum を通じて RPM として /QOpenSys/pkgs にインストールされます。推奨の対話型シェルとして bash が付属し、これらにリモートでアクセスするには、まず STRTCPSVR *SSHD で SSH デーモンを明示的に起動する必要があります。
-
Paths with spaces and special characters across bash, zsh, PowerShell and cmd
The same file name with a space, a wildcard character or a leading dash breaks a different scripting habit in each shell: an unquoted expansion in bash or zsh, a wildcard-interpreting -Path in PowerShell, and an unquoted argument in cmd. Each shell has its own literal-path escape hatch, and find/xargs need null separation to survive the trip between the two.
機械可読: JSON