Path: csiph.com!xmission!news.glorb.com!usenet.stanford.edu!not-for-mail From: Piotr Grzybowski Newsgroups: gnu.bash.bug Subject: [patch] new special variable: test argument Date: Wed, 16 Dec 2015 16:03:14 +0100 Lines: 60 Approved: bug-bash@gnu.org Message-ID: NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11419202a35cdd05270534ce X-Trace: usenet.stanford.edu 1450278199 14150 208.118.235.17 (16 Dec 2015 15:03:19 GMT) X-Complaints-To: action@cs.stanford.edu To: bug-bash Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=8FPCoq6M22RLnGuyn1yIUY2TOMW/EC0edLQ8YxZZ7KM=; b=yI6I+o1o+XNV4+orODY7YqVgEWAiD4mudf2ibh7TOW29lVtEJoiGisEiKAGA6+LT5m Gjbn4Z1SKFAISJnXWb8f9mOE6vKfKQIsHvOr9SQ/AHZCNCBQZVSODqhKeDRvds0chcea ymjxm1/sc70xUiCon5AIuLy0YFblwE0bfrTiXticxqffY3iTc+G2Pa2gxrxMiH8XdL/U oi4bpa59ifQjme8C5nkkExZtjIO3LxxdIca9CoNG7S/Zib8oTVAyU9RIR5DHbYt8XSgC 67zJHgM/UJTFLeKeq9FUUqtsElQtWbWdDPthcND1ZTim1/ROjlxK/aiLPE8veMYoi36i ApOA== X-Received: by 10.25.82.6 with SMTP id g6mr15404929lfb.135.1450278194947; Wed, 16 Dec 2015 07:03:14 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::232 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com gnu.bash.bug:12032 --001a11419202a35cdd05270534ce Content-Type: text/plain; charset=UTF-8 Dear All, one thing I missed for some time now, is the ability to access the argument passed to test, or any argument on the right hand side. I needed it so I made a quick hack, which I attach as a reference. It allows to access arg in the the -f $arg easily, e.g.: [ -f /tmp/myfile ] && { echo "$^ is here"; head -1 "$^"; } I would be glad for some feedback. What I have in mind is: make $^ a special all-purpose variable, something in the lines of perls $_ . The name '^' is just a first pick, and the implementation is a proof of concept more than complete patch, which I would like to make complete, if you find this of any interest . cheers, pg --001a11419202a35cdd05270534ce Content-Type: application/octet-stream; name="0001-special-s6-variable.patch" Content-Disposition: attachment; filename="0001-special-s6-variable.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ii8y6tz80 RnJvbSBiMmFjMDIyNDNiZWFkYzBjMDBmZTIwYmRlODE4Yjc3ODUyM2RkNGFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaW90ciBHcnp5Ym93c2tpIDxtZXJsaW5AbmFyc2lsLm9yZy5w bD4KRGF0ZTogV2VkLCAxNiBEZWMgMjAxNSAxNToyNTozMCArMDEwMApTdWJqZWN0OiBbUEFUQ0hd ICReIHNwZWNpYWwgdmFyaWFibGUKCi0tLQogc3Vic3QuYyB8IDYgKysrKysrCiB0ZXN0LmMgIHwg NyArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9zdWJzdC5jIGIvc3Vic3QuYwppbmRleCAwZjZjOWVmLi5iM2FkZTBmIDEwMDY0NAotLS0gYS9z dWJzdC5jCisrKyBiL3N1YnN0LmMKQEAgLTE0MSw2ICsxNDEsNyBAQCBTSEVMTF9WQVIgKmlmc192 YXI7CiBjaGFyICppZnNfdmFsdWU7CiB1bnNpZ25lZCBjaGFyIGlmc19jbWFwW1VDSEFSX01BWCAr IDFdOwogaW50IGlmc19pc19zZXQsIGlmc19pc19udWxsOworZXh0ZXJuIGNoYXIgKmxhc3Rfc3Bl Y2lhbF9hcmd1bWVudDsKIAogI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCiB1bnNpZ25l ZCBjaGFyIGlmc19maXJzdGNbTUJfTEVOX01BWF07CkBAIC04MjQ3LDYgKzgyNDgsMTEgQEAgcGFy YW1fZXhwYW5kIChzdHJpbmcsIHNpbmRleCwgcXVvdGVkLCBleHBhbmRlZF9zb21ldGhpbmcsCiAg ICAgICB0ZW1wID0gaXRvcyAobnVtYmVyX29mX2FyZ3MgKCkpOwogICAgICAgYnJlYWs7CiAKKyAg ICAvKiAkXiAtLSBbIC1mIC90bXAvbXlmaWxlIF0gJiYgeyBlY2hvICIkXiBpcyBoZXJlIjsgaGVh ZCAtMSAiJF4iOyB9ICovCisgICAgY2FzZSAnXic6CisgICAgICB0ZW1wPXN0cmR1cChsYXN0X3Nw ZWNpYWxfYXJndW1lbnQpOworICAgICAgYnJlYWs7CisKICAgICAvKiAkPyAtLSByZXR1cm4gdmFs dWUgb2YgdGhlIGxhc3Qgc3luY2hyb25vdXMgY29tbWFuZC4gKi8KICAgICBjYXNlICc/JzoKICAg ICAgIHRlbXAgPSBpdG9zIChsYXN0X2NvbW1hbmRfZXhpdF92YWx1ZSk7CmRpZmYgLS1naXQgYS90 ZXN0LmMgYi90ZXN0LmMKaW5kZXggOTVlMTBhMC4uZmExOGU3NCAxMDA2NDQKLS0tIGEvdGVzdC5j CisrKyBiL3Rlc3QuYwpAQCAtOTgsNiArOTgsOCBAQCBleHRlcm4gaW50IGVycm5vOwogCiAjZGVm aW5lIFRFU1RfRVJSRVhJVF9TVEFUVVMJMgogCitjaGFyICpsYXN0X3NwZWNpYWxfYXJndW1lbnQ9 TlVMTDsKKwogc3RhdGljIHByb2NlbnZfdCB0ZXN0X2V4aXRfYnVmOwogc3RhdGljIGludCB0ZXN0 X2Vycm9yX3JldHVybjsKICNkZWZpbmUgdGVzdF9leGl0KHZhbCkgXApAQCAtNTQ4LDYgKzU1MCwx MSBAQCB1bmFyeV90ZXN0IChvcCwgYXJnKQogCSAgICAgIHN0YXRfYnVmLnN0X2F0aW1lIDw9IHN0 YXRfYnVmLnN0X210aW1lKTsKIAogICAgIGNhc2UgJ2YnOgkJCS8qIEZpbGUgaXMgYSBmaWxlPyAq LworICAgIGlmIChsYXN0X3NwZWNpYWxfYXJndW1lbnQhPU5VTEwpIHsKKyAgICAgICAgZnJlZShs YXN0X3NwZWNpYWxfYXJndW1lbnQpOworICAgICAgICBsYXN0X3NwZWNpYWxfYXJndW1lbnQ9TlVM TDsKKyAgICB9CisgICAgbGFzdF9zcGVjaWFsX2FyZ3VtZW50PXN0cmR1cChhcmcpOwogICAgICAg aWYgKHNoX3N0YXQgKGFyZywgJnN0YXRfYnVmKSA8IDApCiAJcmV0dXJuIChGQUxTRSk7CiAKLS0g CjIuNC4zCgo= --001a11419202a35cdd05270534ce--