주제: 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.
-
Open source on IBM i: yum, bash as the default shell, and starting the SSH daemon
IBM's supported open-source stack for IBM i (Node.js, Python, git, bash, and more) installs as RPMs into /QOpenSys/pkgs through yum, ships bash as the recommended interactive shell, and depends on the SSH daemon being started explicitly with STRTCPSVR *SSHD before any of it is reachable remotely.
-
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