@code{combine-and-quote-strings} is @emph{not} intended to protect
special characters from shell evaluation.
-@defun shell-split-string string
+@defun split-string-shell-command string
This function splits @var{string} into substrings, respecting double
and single quotes, as well as backslash quoting.
@smallexample
-(shell-split-string "ls /tmp/'foo bar'")
+(split-string-shell-command "ls /tmp/'foo bar'")
@result{} ("ls" "/tmp/foo bar")
@end smallexample
@end defun
* Lisp Changes in Emacs 28.1
+++
-*** New function 'shell-split-string'.
+*** New function 'split-string-shell-command'.
This splits a shell string into separate components, respecting single
and double quotes, as well as backslash quoting.
(push (mapconcat #'identity (nreverse arg) "") args)))
(cons (nreverse args) (nreverse begins)))))
-(defun shell-split-string (string)
+(defun split-string-shell-command (string)
"Split STRING (a shell command) into a list of strings.
General shell syntax, like single and double quoting, as well as
backslash quoting, is respected."
'(("cd" "ba" "") 1 4 7)))))
(ert-deftest shell-tests-split-string ()
- (should (equal (shell-split-string "ls /tmp")
+ (should (equal (split-string-shell-command "ls /tmp")
'("ls" "/tmp")))
- (should (equal (shell-split-string "ls '/tmp/foo bar'")
+ (should (equal (split-string-shell-command "ls '/tmp/foo bar'")
'("ls" "/tmp/foo bar")))
- (should (equal (shell-split-string "ls \"/tmp/foo bar\"")
+ (should (equal (split-string-shell-command "ls \"/tmp/foo bar\"")
'("ls" "/tmp/foo bar")))
- (should (equal (shell-split-string "ls /tmp/'foo bar'")
+ (should (equal (split-string-shell-command "ls /tmp/'foo bar'")
'("ls" "/tmp/foo bar")))
- (should (equal (shell-split-string "ls /tmp/'foo\\ bar'")
+ (should (equal (split-string-shell-command "ls /tmp/'foo\\ bar'")
'("ls" "/tmp/foo\\ bar")))
- (should (equal (shell-split-string "ls /tmp/foo\\ bar")
+ (should (equal (split-string-shell-command "ls /tmp/foo\\ bar")
'("ls" "/tmp/foo bar"))))
;;; shell-tests.el ends here